package me.acomma.groot.infrastructure.dao;

import me.acomma.groot.domain.role.Role;
import me.acomma.groot.domain.role.RoleId;
import me.acomma.groot.domain.user.UserId;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface RoleDao {
    int insert(Role role);

    int delete(@Param("roleId") RoleId roleId);

    int update(Role role);

    Role select(@Param("roleId") RoleId roleId);

    List<Role> pagedQuery(@Param("role") Role role);

    List<Role> selectAll();

    List<Role> selectByUserId(@Param("userId") UserId userId);

    void deleteRoleMenuByRoleId(@Param("roleId") RoleId roleId);

    void insertRoleMenu(@Param("roleId") Long roleId, @Param("menuIds") List<Long> menuIds);
}
